export default class Stars {
  constructor(ctx, width, height, amount) {
    this.ctx = ctx;
    this.width = width;
    this.height = height;
    this.stars = this.getStars(amount);
  }

  // 返回一堆的小星星
  getStars(amount) {
    let stars = []
    while (amount --) {
      // console.log(amount)
      // 创建一个星星的坐标及大小数据描述JSON对象，添加到stars数组
      stars.push({
        x: Math.random() * this.width,
        y: Math.random() * this.height,
        r: Math.random() + 0.2,
        c: 1,
      });
    }
    return stars;
  }

  // 画满天星
  draw() {
    let ctx = this.ctx
    ctx.save(); // 保存canvas当前绘制，一般新绘制前调用
    // star 是从stars里的一颗star 这里是function的参数
    this.stars.forEach((star) => {
      ctx.beginPath(); // 开始绘制
      ctx.fillStyle = `rgba(255,255,255, ${star.c})`
      ctx.arc(star.x, star.y, star.r, 0, 2 * Math.PI); // 画椭圆
      ctx.fill(); // 填充色
    })
    ctx.restore(); // 再次保存
  }

  // 星星没隔10帧闪一下
  blink(s, i) {
    // map方法 找到合适的星星放进新数组 匹配
    this.stars = this.stars.map((star, index) => {
      let sign = Math.random() > 0.5 ? s : 0.8
      if (i < index) star.c = sign;
      return star;
    });
  }
}
